﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using DataLayer.dbml;
using DataLayer.Controller;
using System.Configuration;


public partial class home_EstadoServicios : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //this.hdnNit.Value = "899999115-00";
            this.hdnNit.Value = Request.QueryString["NIT"].ToString();
            this.GetServiciosByEstado();            
        }
    }

    private void GetServiciosByEstado()
    {
        DataTable dt = ServicesController.GetCantidadServiciosByEstado(this.hdnNit.Value);

        //Solo se muestran 3 estados (activos, cancelados, suspendidos
        DataTable dtResumen = new DataTable();
        dtResumen.Columns.Add("estado");
        dtResumen.Columns.Add("cantidad");

        //Arreglos con los estados
        string[] arrEstadoActivo = this.ConstruirArreglo(ConfigurationManager.AppSettings["EstadoServicioActivo"].ToString());
        string[] arrEstadoSuspendido = this.ConstruirArreglo(ConfigurationManager.AppSettings["EstadoServicioSuspendido"].ToString());
        string[] arrEstadoCancelado = this.ConstruirArreglo(ConfigurationManager.AppSettings["EstadoServicioCancelado"].ToString());

        int activos = 0;
        int suspendidos = 0;
        int cancelados = 0;
        for (int i = 0; i < dt.Rows.Count; i++)
        { 
            //Se va contando la cantidad de servicios de acuerdo al estado
            if (arrEstadoActivo.Contains(dt.Rows[i]["estado"].ToString()))
                activos += Convert.ToInt32(dt.Rows[i]["cantidad"].ToString());
            else if (arrEstadoSuspendido.Contains(dt.Rows[i]["estado"].ToString()))
                suspendidos += Convert.ToInt32(dt.Rows[i]["cantidad"].ToString());
            else if (arrEstadoCancelado.Contains(dt.Rows[i]["estado"].ToString()))
                cancelados += Convert.ToInt32(dt.Rows[i]["cantidad"].ToString());

        }

        //Se crea datatable con los 3 estados que se muestran
        DataRow dr1 = dtResumen.NewRow();
        DataRow dr2 = dtResumen.NewRow();
        DataRow dr3 = dtResumen.NewRow();
        dr1["estado"] = "Activos";
        dr1["cantidad"] = activos;
        dr2["estado"] = "Suspendidos";
        dr2["cantidad"] = suspendidos;
        dr3["estado"] = "Cancelados";
        dr3["cantidad"] = cancelados;
        dtResumen.Rows.Add(dr1);
        dtResumen.Rows.Add(dr2);
        dtResumen.Rows.Add(dr3);

        this.grdEstadoServicios.DataSource = dtResumen;
        this.grdEstadoServicios.DataBind();        
    }

    protected void grdEstadoServicios_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if ((e.Row.RowType == DataControlRowType.Header) || (e.Row.RowType == DataControlRowType.DataRow))
        {
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
                e.Row.Cells[i].BorderStyle = BorderStyle.None;
            }

        }
    }

    private string[] ConstruirArreglo(string cadena)
    {
        string[] arrRetorno = cadena.Split(',');

        //Recorre el arreglo y quita espacios en blanco
        for (int i = 0; i < arrRetorno.Length; i++)
        {
            arrRetorno[i] = arrRetorno[i].Trim();
        }

        return arrRetorno;
    }

}
